Conventional data storage management tasks include configuring and allocating resources in a data storage system and an associated processing system (e.g., a computing system) to achieve a desired level of performance in the combined system. Thus, managing data storage resources may involve managing components of the data storage system and/or components that use the data storage system.
A data storage system may include one or more data storage components such as disk drives and solid state devices. A data storage system also may include components that control access to the data storage components. For example, a data storage system may include several data storage components and these components may be distributed throughout a data network. In this case, control components may manage the transmission of data between the computing system and each of the data storage components. This scheme may be used to isolate the computing system from the details of how that data is stored on the data storage components and which data storage components actually store the data. Thus, the computing system may simply send data to and receive data from the data storage system, not the individual components. One advantage of this scheme is that the control components may reconfigure how and where data is stored in the data storage system without modifying the computing system or application programs executing on the computing system.
In a conventional computing system, application programs (hereafter “applications”) executing on a processor use a data storage system by accessing data and/or data files stored in the data storage system. For example, a database application operates in conjunction with a database of information that may be stored in the data storage system. During the execution of the database application, various processes of the application access data in the database.
The task of allocating physical resources (e.g., disk drives) to logical entities (e.g., application data addresses) is called schema mapping, or logical to physical schema design. One example of a typical schema is: “The employee table of the HR database allocated to tablespace01 on datafile01 on logical volume VOL01, which is a RAID-10.4+4@32 KB device, 500 GB size.” Thus, the schema defines where the logical entity “employee table” will physically reside: “VOL01,” and the size of the disk drive: “500 GB.”
Administrators of computing systems continually strive to ensure that their computing and data storage systems are as efficient as possible. On the one hand, an administrator should use a data storage system with sufficient capacity (e.g., input/output (I/O″) capacity) so that applications executing on the computing system will execute at a reasonable speed. When a system is configured with too many applications vying for the services of the data storage system, the response time of the system may be undesirably long because the applications must wait for their turn to access the data storage system. On the other hand, an administrator should avoid buying a data storage system with excess capacity. Otherwise, the storage system may be under used, resulting in a waste of valuable resources.
One important capacity parameter of a data storage system is I/O capacity. Some techniques that have been employed to improve I/O capacity in database applications include separating the data and the index of the database, spreading the storage load as evenly as possible and allocating frequently used data objects to different physical resources.
An administrator's ability to manage a data storage system may be adversely impacted by the complexities of the components of the data storage system. For example, an administrator may not fully understand the operation of complex components such as redundant array of independent disks (“RAID”) arrays, storage area network (“SAN”) name servers, storage virtualization devices, host device trees, redundant path name facilities, and host volume management.
Moreover, layers of software protocol may obscure the very identity of the components. For example, each layer of software protocol may provide its own name by which the component is known.
Due to the ever increasing size, number and complexity of data components used in modern data storage systems, it has become difficult for administrators to manage the design and the growth of enterprise applications, let alone optimize the applications. Such difficulties may result in a relatively high cost of ownership due to the number of person-hours spent managing the system and due to application down time. Accordingly, a need exists for improved management techniques for data storage systems.